\documentclass[a4paper,11pt]{report}
\usepackage{graphicx}
\usepackage{a4wide}
\usepackage[dutch]{babel}
%\usepackage[pdftex]{hyperref}
\bibliographystyle{plain}

%opening
\title{Multi-Agent Systems: Een Verkeerscontrolesysteem}

\author{Peter Van den Bosch\\Tom Wuyts\\\\\\T.a.v. Prof. Tom Holvoet \& Alexander Helleboogh}
\date{December 22, 2006}
\begin{document}
\maketitle
\tableofcontents
%\setcounter{secnumdepth}{2} 
%\setcounter{tocdepth}{1}
\def\thesection{\arabic{section}}

\begin{abstract}
Dit verslag biedt een overzicht van het project van het vak multi-agent systems, met als doel het ontwikkelen van een verkeerscontrolesysteem. Eerst wordt de werkverdeling besproken, gevolgd door het ontwikkelingsproces en een evaluatie. Tot slot wordt nog besloten.
\end{abstract}

\newpage
\section{Werkverdeling}
\label{werkverdeling}
We zijn begonnen met een domein model te maken en vandaaruit een eerste ontwerp van de belangrijke elementen van de applicatie. Het voorlopige klassendiagramma werd dan gegenereerd om een overzicht te kunnen houden bij het implementeren. Hierna werden de interfaces geschreven. Vervolgens hebben we in iteraties gewerkt. Dit om de impact van designfouten te beperken en te voorkomen dat alle code ineens getest moet worden.\\
\\
In een eerste iteratie werd dan de verkeersinfrastructuur samen met de auto's uitgewerkt. Dit werd getest met een testklasse door commando's naar de resource agents te sturen. Deze resource agents hadden enkel de benodigde functionaliteit om auto's te kunnen laten voortbewegen. Hiervoor is dan ook een gui geschreven, zodat de werking ook gemakkelijk visueel gecontroleerd kon worden.

De volgende iteratie werd gebruikt om het intelligent handelen aan task agents toe te voegen. Hiervoor werden exploration en intention ants gebruikt. Deze ants werden ge\"implementeerd, en ook werd de nodige beslislogica aan de task agents toegevoegd, de mogelijkheid om what-if vragen te stellen en intenties mee te delen aan de resource agents. Dit werd zoals in de eerste iteratie opnieuw uitvoerig getest. Om dit te vergemakkelijken onderging de gui enkele kleine aanpassingen.

In een derde iteratie werden de feasibility ants toegevoegd. Hiervoor zijn de resource agents en de intention ants ge\"implementeerd. Hieronder staat wie welk deel van het werk gedaan heeft per iteratie. De verdeling is gebeurd zodat de gelijkaardige klassen door dezelfde persoon zijn ge\"implementeerd.

Tijdens de vierde en laatste iteratie werden performantie- en schaalbaarheidstesten uitgevoerd. Logische fouten die hieruit bleken, werden gecorrigeerd.

\begin{table}[h]
\begin{tabular}{l|ll}
Iteraties & Peter   & Tom \\
\hline
Iteratie 0 & Hoofdontwerp & Hoofdontwerp\\
Iteratie 1 & Gui, TaskAgent, &Infrastructure,Car, Testklasse,  \\
& Mainloop &Mainloop\\
Iteratie 2 & Exploration en Intention Ants,  & Resource Agent, TestKlasse\\
& TaskAgent, Gui& \\
Iteratie 3 & Feasibity Ants & Resource Agent, TestKlasse \\
Iteratie 4 & Debuggen, & Debuggen\\
& Logische fouten & Logische Fouten \\
\end{tabular}
\caption{De werkverdeling tijdens de verschillende iteraties van het ontwikkelingsproces. Het debuggen tijdens elke iteratie gebeurde door beide teamleden. Ook het verslag is door ons beiden geschreven.}
\end{table}

\newpage
\section{Stappen in het ontwikkelingsproces}
\subsection{Analyse en vereisten}
Het domeinmodel bestaat uit volgende onderdelen:
\begin{description}
 \item[Segment] Een segment is het basisonderdeel van het wegennet.
 \item[Auto] Een auto (Car) beweegt van segment naar segment en bevindt zich elk moment op \'e\'en segment.
 \item[Taak] Een taak (Task) wordt uitgevoerd door een auto en heeft een segment dat zijn bestemming is.
 \item[Verkeersinfrastructuur] Een verkeersinfrastructuur (TrafficInfrastructure) is een onderdeel van het wegennet. Hiertoe behoren straten (Road) en kruispunten (CrossRoad). Een verkeersinfrastructuur bestaat uit \'e\'en of meerdere segmenten.
\end{description}
 
\begin{figure}[h!]
\caption{Domein model}
\begin{center}
\includegraphics[scale=0.70]{Domainmodel.png}
\end{center}
\end{figure}

\input{Development}
\input{Ontwerp}
\newpage
\include{Evaluation}
\newpage
\section{Besluit}
Multi-Agent Systems zijn een alternatieve manier om een grote opdracht uit te voeren. In tegenstelling tot een gecentraliseerde oplossing waarbij \'e\'en component al het werk doet, wordt een gedecentraliseerde oplossing nagestreefd. Elke agent opereert onafhankelijk. Dit zorgt voor een betere schaalbare oplossing omdat elke agent beperkte rekenkracht en geheugen nodig heeft. Het systeem kan oneindig groot worden zonder dat er bottlenecks ontstaan voor de berekeningen. 

Deze aanpak maakt het systeem ook flexibeler. Indien er \'e\'en agent faalt zal een andere agent zich hieraan aanpassen en met een andere aanpak toch zijn taak proberen te volbrengen. Een agent hoeft alleen maar te communiceren met zijn buren en niet met andere entiteiten ergens verder weg. Het nadeel is natuurlijk dat er geen globaal overzicht meer is van de omgeving.\\
\\
De agents zelf bewegen in een dynamische omgeving. Deze omgeving kan de agent maar gedeeltelijk waarnemen en verandert continu. Resultaten kunnen niet gegarandeerd worden, en een taak moet uitgevoerd worden. De agents zullen dus moeten samenwerken en communiceren om hun taak te voltooien. Hierbij krijgen ze de hulp van verschillende soorten ants. Deze nemen elk de verantwoordelijkheid voor een deel van de complexe taak op zich.
\newpage
\section{Bijlagen}
\begin{tabular}{lll}
TestKlassen & Beschrijving \\
\hline
TestFeasibility & Test om informatie van een Resource Agent te controleren\\
TestFlexibility & Test de flexibiliteit  \\
TestInfrastructure & Test de aanroep van een car via Task Agent\\
TestPerformance & Test voor de performantie bij weinig en druk verkeer\\
TestSenario & Test voor de code in iteratie 2\\
\end{tabular}
\begin{figure}[hb!]
\caption{Een screenshot van de opstelling van de eerste test met 29 auto's.}
\begin{center}
\includegraphics[scale=0.30]{opstelling.png}
\end{center}
\end{figure}\\
\begin{figure}[h!]
\caption{Een screenshot van de opstelling van de tweede test met 29 auto's. Aan deze opstelling zijn twee extra wegen toegevoegd zodat de auto's de bottleneck c1-c4 kunnen vermijden.}
\begin{center}
\includegraphics[scale=0.30]{opstelling2.png}
\end{center}
\end{figure}
\begin{figure}[ht!]
\caption{Een screenshot van de opstelling om de flexibiliteit te testen.}\label{fig:flex}
\begin{center}
\includegraphics[scale=0.30]{TestFlexibility.png}
\end{center}
\end{figure}
%\bibliography{reference}
%\nocite{*}
\end{document}
